package com.yidu.ladder.route.service.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yidu.ladder.route.dao.BusCircuitDao;
import com.yidu.ladder.route.domain.BusCircuit;
import com.yidu.ladder.route.domain.BusCircuitVo;
import com.yidu.ladder.route.service.BusCircuitService;

@Service
public class BusCircuitServiceImpl implements BusCircuitService {

	@Autowired
	private BusCircuitDao busCircuitDao;

	public BusCircuitDao getBusCircuitDao() {
		return busCircuitDao;
	}

	public void setBusCircuitDao(BusCircuitDao busCircuitDao) {
		this.busCircuitDao = busCircuitDao;
	}
	
	
	@Override
	public Map<String, Object> queryBusCircuitWithPage(BusCircuitVo busCircuitVo) {

		// 设置页面:page-1*limit
		busCircuitVo.setPage((busCircuitVo.getPage() - 1) * busCircuitVo.getLimit());
		// 调用Dao层带条件的分页查询
		List<BusCircuit> busCircuitList = busCircuitDao.queryBusCircuitWithPage(busCircuitVo);
		// 每次查询得到相应的记录数
		int busCircuitCount = busCircuitDao.countBusCircuit(busCircuitVo);
		// 创建一个Map接收数据返回给前端
		Map<String, Object> map = new HashMap<String, Object>();
		// 往map集合存放code
		map.put("code", 0);
		// 往map集合存放每次查询得到相应的记录数
		map.put("count", busCircuitCount);
		// 往map集合存放分页查询的结果
		map.put("data", busCircuitList);
		// 返回map给前端
		return map;
	}
	@Override
	public Map<String, Object> queryRoute(BusCircuitVo busCircuitVo) {
				// 设置页面:page-1*limit
				busCircuitVo.setPage((busCircuitVo.getPage() - 1) * busCircuitVo.getLimit());
				// 调用Dao层带条件的分页查询
				List<BusCircuit> busCircuitList = busCircuitDao.queryRoute(busCircuitVo);
				// 每次查询得到相应的记录数
				int busCircuitCount = busCircuitDao.countRoute(busCircuitVo);
				// 创建一个Map接收数据返回给前端
				Map<String, Object> map = new HashMap<String, Object>();
				// 往map集合存放code
				map.put("code", 0);
				// 往map集合存放每次查询得到相应的记录数
				map.put("count", busCircuitCount);
				// 往map集合存放分页查询的结果
				map.put("data", busCircuitList);
				// 返回map给前端
				return map;
	}

	@Override
	public List<BusCircuit> queryBusCircuit(BusCircuitVo busCircuitVo) {
		// 执行查询所有路线方法
		return busCircuitDao.queryBusCircuit(busCircuitVo);
	}

	@Override
	public int saveBusCircuit(BusCircuitVo busCircuitVo) {
		// 执行添加路线方法
		return busCircuitDao.saveBusCircuit(busCircuitVo);
	}

	@Override
	public int deleteBusCircuitById(String circuitId) {
		// 执行根据id删除路线信息方法并返回
		return busCircuitDao.deleteBusCircuitById(circuitId);
	}
	
	
	@Override
	public boolean frozenOrRecoveBusCircuit(String busCircuitIdstr, String flag) {
		//创建传参的Map集合
		Map<String, Object> paramMap = new HashMap<String, Object>();
		//定义状态变量
		String useable = flag;
		//根据逗号分割ID
		String[] busCircuitIds = busCircuitIdstr.split(",");
		//定义执行结果返回的总数 
		int total = 0;
		// 若小于路线id的总数，一直循环
		for (int i =0; i < busCircuitIds.length; i++) {
			//往传参的Map集合添加汽车站id
			paramMap.put("circuitId", busCircuitIds[i]);
			//往传参的Map集合添加要修改的状态
			paramMap.put("useable", useable);
			//执行冻结或还原方法
			int result = busCircuitDao.frozenOrRecovebusCircuit(paramMap);
			//计数,因为成功返回1，所以把所有执行结果加起来正好就等于ID的总数
			total += result;
		}
		// 判断计数的结果和汽车站id集合是否相等(三元判断)
		return total == busCircuitIds.length ? true : false;
		
		
	}
	
	@Override
	public int updateBusCircuitById(BusCircuitVo busCircuitVo) {
		// 执行根据id修改路线信息方法并返回结果
		return busCircuitDao.updateBusCircuitById(busCircuitVo);
	}


}
